% How to prepare Doomemacs for LaTeX (LuaTeX)
% sudo dnf install texlive-full
% sudo dnf install texlive-babel-russian
% sudo dnf install texlive-hyphen-russian
% sudo dnf install texlive-datetime2-russian
% sudo dnf install texlive-pgfplots
% sudo dnf install texlive-pgfplots-doc
% sudo dnf install texlive-cyrillic
% sudo dnf install texlive-vmargin
% sudo dnf install texlive-vmargin-doc
% sudo dnf install texlive-lstaddons
% sudo dnf install texlive-lstaddons-doc
%
% also I did (on Windows):
% tlmgr  install fontspec enumitem extsizes subfig \
%                caption natbib babel-russian \
%                titlesec lh cyrillic \
%                hyphen-russian pgfplots \
%                vmargin listings
% delete ~/.texlive2024 folder
% in Doomemacs enable pdf-tool M-x pdf-tools-install
%                              M-x pdf-info-check-epdfinfo
%\documentclass[oneside,final,14pt]{extreport}
%\documentclass[a4paper,towcolumn,14pt,titlepage]{acticle}
\documentclass[a4paper,14pt]{book}
\usepackage[english,russian]{babel}
\usepackage{fontspec} % Advanced font management (works only with LuaTeX)
\usepackage{pgfplots}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{arrows.meta}
\usepackage{layout} % place \layout command to understand
\usepackage{geometry}
\usepackage{vmargin}
% A4 paper, left margin 30mm, top, right, and bottom
% margin 20mm each, no headers or footers:
\setpapersize{A4}
\setmarginsrb{30mm}{20mm}{20mm}{20mm}{0cm}{5mm}{0cm}{5mm}
%\pagestyle{empty} % removes pages numbers
\usepackage{listings}

\setmainfont{JetBrains Mono}
\setmonofont{JetBrains Mono}
\newfontfamily\jbmono{JetBrains Mono} % Replace 'JetBrains Mono' with your desired font

\title{Примеры использования LaTeX}
\author{Чайка Л.Н.}
\date{2024}

\begin{document}

%\printinunitsof{cm} % now working strange
\layout

\maketitle % без этого страницы с названием не будет

\part{Начало}

\chapter{Настраивам LaTeX}

\section{Как выводить текст, переносы, абзацы}

\subsection{Вывод текста простой}

\subsubsection{все по умолчанию оставляем}

\paragraph{Как есть так и оставляем}

\subparagraph{Ничего не добавляя}
Если хочешь что бы не было отсупа, то используй комаду
\textbf{noindent} в начале строки.\newline
\subsection{Вывод специальных символов}
Следующие символы можно экранировать обратным слешем
перед ними: \\
\% \{ \} \$ \& \# \_. Дополнительное экранирование для особых
символов: \\ \textbackslash  \textasciicircum \~{}  `` ''

\subsection{Размеры шрифта, относительные}

\tiny oчень маленький шрифт, трудно читаемый \\
\scriptsize малеький шрифт \\
\footnotesize таким размером обычно делают сноски \\
\small шрифт почти такой же как и обычный \\
\normalsize нормальный размер букв \\
\large чуть увеличенный размер \\
\Large еще более увеличенный размер \\
\LARGE очень большой размер текста \\
\huge просто огромный размер текста \\
\Huge нереально огромный размер текста \\
\Huge to large some string of some text \\
\normalsize

\section{Формулы}

\subsection{Вывод формул, примеры}
% Example 1
\ldots when Einstein introduced his formula
\begin{equation}
	e = m \cdot c^2 \; ,
\end{equation}
which is at the same time the most widely known
and the least well understood physical formula.
% Example 2
\ldots from which follows Kirchhoff's current law:
\begin{equation}
	\sum_{k=1}^{n} I_k = 0 \; .
\end{equation}
Kirchhoff's voltage law can be derived \ldots
% Example 3
\ldots which has several advantages.
\begin{equation}
	I_D = I_F - I_R
\end{equation}
is the core of a very different transistor model. \ldots

\section{Графика}

\subsection{2d графики}

\subsubsection{Минимальный график с сеткой}

\begin{tikzpicture}
	\begin{axis}[
			title=Любимая фукнция всех школьников,
			xlabel={Ось aбсцисс},
			ylabel={Ось ординат},
			grid=major]
		\addplot{x^2};
	\end{axis}
\end{tikzpicture}

\subsubsection{Несколько функций, оси координат}
\begin{figure}
	\scalebox{1.5}{
		\begin{tikzpicture}
			\begin{axis}[
					xmin=-2, xmax=2, ymin=-2, ymax=2,
					axis lines=middle,
					samples=50,
					title={$y=x^3$},
					xlabel={X},
					ylabel={Y}
				]
				\addplot{x^3};
				\addplot[color=red, dashed]{x^2};
				\addplot[color=green, samples=100]{1-x^2};
				\addplot[color=blue, domain=-1:1]{1};
			\end{axis}
		\end{tikzpicture}
	}
	\caption{Примеры графиков разными линиями}
\end{figure}

\subsubsection{Произвольные подписи на осях, масштабирование графика}
%\resizebox{15cm}{7cm}
\scalebox{1.5}
{
	\begin{tikzpicture}
		\begin{axis}[
				clip=false,
				xmin=0, xmax=2.5*pi,
				ymin=-1.5, ymax=1.5,
				axis lines=middle,
				samples=50,
				xlabel={x},
				ylabel={y},
				xtick={0,pi/2,pi,3*pi/2,2*pi},
				xticklabels={$0$,$\frac{\pi}{2}$,$\pi$,
						$\frac{3\pi}{2}$,$2\pi$},
				xticklabel style={anchor=south west},
				xmajorgrids=true,
				grid style=dashed
			]
			\addplot[color=green,
				domain=0:2*pi,
				line width=2pt]{sin(deg(x))}
			node[right,pos=0.8]{$f(x)=sin(x)$};
			\addplot[color=red,domain=0:2*pi]{cos(deg(x))}
			node[right,pos=0.9]{$f(x)=cos(x)$};
		\end{axis}
	\end{tikzpicture}
}

\subsection{3d графики}

\subsubsection{Поверхность, Сетка, Итерполяция}

\scalebox{1}{
	\begin{tikzpicture}
		\begin{axis}[
				title={$y=1-x^2-y^2$},
			]
			\addplot3[surf,samples=10]{1-x^2-y^2};
		\end{axis}
	\end{tikzpicture}
	\begin{tikzpicture}
		\begin{axis}
			\addplot3[mesh,samples=10]{1-x^2-y^2};
		\end{axis}
	\end{tikzpicture}
}
\begin{tikzpicture}
	\begin{axis}
		\addplot3[surf,samples=10,shader=interp]{1-x^2-y^2};
	\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
	\begin{axis}[colormap/cool, hide axis]
		\addplot3[mesh,samples=10]{1-x^2-y^2};
	\end{axis}
\end{tikzpicture}

\subsubsection{Меняем угол просмотра, вращаем график}

\begin{tikzpicture}
	\begin{axis}[colormap/cool, view={45}{45}]
		\addplot3+[domain=0:5*pi,mesh,samples=50]
		({sin(deg(x))},
		{cos(deg(x))},
		{x});
	\end{axis}
\end{tikzpicture}

\subsection{Рисуем графику}

\subsubsection{Линии, Вектора, Сетка}

\begin{tikzpicture}
	\draw[ultra thick] (0,3) -- (2,3);
	\draw[very thick] (0,2.5) -- (2,2.5);
	\draw[thick] (0,2) -- (2,2);
	\draw[thin] (0,1.5) -- (2,1.5);
	\draw[very thin] (0,1) -- (2,1);
	\draw[ultra thin] (0,.5) -- (2,.5);

	\draw node at (3, 3) {\tiny Ultra Thick};
	\draw node at (3, 2.5) {\tiny Very Thick};
	\draw node at (3, 2) {\tiny Thick};
	\draw node at (3, 1.5) {\tiny Thin};
	\draw node at (3, 1) {\tiny Very Thin };
	\draw node at (3, 0.5) {\tiny Ultra Thin};
\end{tikzpicture}
\begin{tikzpicture}
	\draw[ultra thick, ->] (0,3) -- (2,3);
	\draw[very thick, >-{Stealth}] (0,2.5) -- (2,2.5);
	\draw[thick, -{Stealth[red]}] (0,2) -- (2,2);
	\draw[thin, ->] (0,1.5) -- (2,1.5);
	\draw[very thin, <->] (0,1) -- (2,1);
	\draw[ultra thin,-{Stealth[length=8pt,width=2pt]}] (0,.5) -- (2,.5);
\end{tikzpicture}
\scalebox{0.5}{
	\begin{tikzpicture}
		\draw (0,0) rectangle (10,6);
		\draw (0,0) grid (10,6);
	\end{tikzpicture}
}

\subsection{Окружности, заливка, арки, элипсы}

\begin{figure}[h] %t-top b-bottom h-here
	\begin{center}
		\begin{tikzpicture}%[transform canvas={scale=4.0}]  %%[scale=4] ONLY changes distances, not the canvas
			\draw[blue,line width=2pt] (0,4) arc (90:-90:2cm and 4cm);
			\draw[dash pattern=on 7pt off 5pt,red,line width=2pt] (0,4) arc (90:270:2cm and 4cm);
			\draw[line width=2pt] (0,0) circle (4cm);
			\filldraw[red] (0,4) circle  (0.1); %add fill=, and draw= to have separate colours
			\filldraw[red] (0,-4) circle (0.1);
			\shade[ball color=blue!10!white,opacity=0.20] (0,0) circle (4cm);
		\end{tikzpicture}
	\end{center}
	\caption{красивый сложный, многослойный рисунок}
	\label{fig:circle1}
\end{figure}

\subsection{Граф, сложный граф со стрелками}

\begin{tikzpicture}[
		SIR/.style={rectangle, draw=red!60, fill=red!5, very thick, minimum size=5mm},
	]
	%Nodes
	\node[SIR]    (Susceptible)                              {Susceptible $S(t)$};
	\node[SIR]    (Infectious)       [below=of Susceptible] {Infectious $I(t)$};
	\node[SIR]    (Recovered)       [below=of Infectious] {Recovered $R(t)$};

	%Lines
	\draw[->, very thick] (Susceptible.south)  to node[right] {$a$} (Infectious.north);
	\draw[->, very thick] (Infectious.south)  to node[right] {$b$} (Recovered.north);
	\draw[->, very thick] (Recovered.east) .. controls  +(right:7mm) and +(right:7mm)   .. (Susceptible.east);
\end{tikzpicture}
%\vspace{1in}
\begin{tikzpicture}[
		youngnode/.style={rectangle, draw=red!60, fill=red!5, very thick, minimum size=40},
		oldnode/.style={rectangle, draw=blue!60, fill=blue!5, very thick, minimum size=40},
	]
	%Nodes
	\node[oldnode]        (SusO)                            { $S_O(t)$};
	\node[oldnode]        (InfO)       [below=of SusO]      { $I_O(t)$};
	\node[oldnode]        (RecO)       [below=of InfO]      { $R_O(t)$};

	\node[youngnode]      (SusY)        [left=of SusO]      { $S_Y(t)$};
	\node[youngnode]      (InfY)        [left=of InfO]      { $I_Y(t)$};
	\node[youngnode]      (RecY)        [left=of RecO]      { $R_Y(t)$};

	%Lines
	\draw[->, very thick] (SusO.south east)  to node[right] {$a_{OO}$} (InfO.north east);
	\draw[->, very thick] (InfO.south)  to node[right] {$b_O$} (RecO.north);
	\draw[->, very thick] (RecO.east)  .. controls  +(right:17mm) and +(right:17mm)   .. (SusO.east);

	\draw[->, very thick] (SusY.south west)  to node[left] {$a_{YY}$} (InfY.north west);
	\draw[->, very thick] (InfY.south)  to node[left] {$b_Y$} (RecY.north);
	\draw[->, very thick] (RecY.west) .. controls  +(left:17mm) and +(left:17mm)   .. (SusY.west);

	\draw[dashed,->, very thick] (InfO.north west)  to  (SusY.south east);
	\draw[->, very thick] (SusY.south east)  to node[left] {$a_{OY}$} (InfY.north east);

	\draw[->, very thick] (SusO.south west)  to node[right] {$a_{YO}$} (InfO.north west);
	\draw[dashed,->, very thick] (InfY.north east)  to  (SusO.south west);
\end{tikzpicture}

\section{Code listings}
\subsection{Однострочный код}
Что бы прямо в тексте сделать односточную вставку кода, можно испполльзовать verb вот так \verb|std::string str{"hello"};|, а
можно еще попробывать вот так, более современный способ:
\lstinline[language=C++,basicstyle=\ttfamily,]!std::vector<const char*> numbers{"hello world"};!

\subsection{Многострочный код}

\begin{figure}
	\begin{lstlisting}[
	  basicstyle=\ttfamily, % without this - char** - problem
	  language={[11]C++},
	  %float,
	  fontadjust=true,
	  keepspaces=true,
	  escapeinside={},
	  showspaces=false,
	  showstringspaces=false,
	  stringstyle=\color{green},
	  frame=single,
	  numbers=left]
#include <iostream>

int main(int argc, char** argv)
{
    std::cout << "hello world" << std::endl;
    return std::cout.fail();
}   \end{lstlisting}
	\caption{C++ Hello World Example}
	\label{lst:hello}
\end{figure}


\setcounter{tocdepth}{3}
\tableofcontents

\end{document}


% Local Variables:
% TeX-engine: luatex
% End:
